: "c" (msr), "a" (val1), "d" (val2))
#define rdmsr_user(msr,val1,val2) ({\
- int _rc = 0; \
+ int _rc; \
__asm__ __volatile__( \
"1: rdmsr\n2:\n" \
".section .fixup,\"ax\"\n" \
" "__FIXUP_ALIGN"\n" \
" "__FIXUP_WORD" 1b,3b\n" \
".previous\n" \
- : "=a" (val1), "=d" (val2), "=r" (_rc) \
- : "c" (msr)); \
+ : "=a" (val1), "=d" (val2), "=&r" (_rc) \
+ : "c" (msr), "2" (0)); \
_rc; })
#define wrmsr_user(msr,val1,val2) ({\
- int _rc = 0; \
+ int _rc; \
__asm__ __volatile__( \
"1: wrmsr\n2:\n" \
".section .fixup,\"ax\"\n" \
" "__FIXUP_ALIGN"\n" \
" "__FIXUP_WORD" 1b,3b\n" \
".previous\n" \
- : "=r" (_rc) \
- : "c" (msr), "a" (val1), "d" (val2)); \
+ : "=&r" (_rc) \
+ : "c" (msr), "a" (val1), "d" (val2), "0" (0)); \
_rc; })
#define rdtsc(low,high) \